package client;

import java.awt.GridLayout;
import java.util.ArrayList;

import javax.swing.JPanel;

public class Grille extends JPanel{

	private CaseGrille grille[][];
	ArrayList<Joueur> joueurs;
	Carte carte;
	
	public String toString()
	{
		int i,j;
		String res = "";
		for(i=0;i<=20;i++)
		{
			for(j=0;j<=20;j++)
			{
				res += grille[i][j].getText();
			}
			res += "\n";
		}
		return res;
	}
	
	public Grille(Carte carte, ArrayList<Joueur> joueurs) {
		this.joueurs = joueurs;
		this.carte = carte;
		grille = new CaseGrille[21][21];
		this.Refresh();
	}

	public void Refresh()
	{
		int i,j;
		this.setLayout(null);
		this.setLayout(new GridLayout(21,21));
		for(i=0;i<=20;i++)
		{
			for(j=0;j<=20;j++)
			{
				int k;
				boolean joueur = false;
				int id_j=0;
				char t='l';
				for (k=0;k<joueurs.size();k++)
				{
					if (joueurs.get(k).getR()==i && joueurs.get(k).getC()==j)
					{
						joueur = true;
						t = joueurs.get(k).getType();
						id_j = joueurs.get(k).getId();
						break;
					}
				}
				if (joueur)
				{
					if (t=='p')
						grille[i][j] = new CasePacman(id_j);
					else
						if (t=='f')
							grille[i][j] = new CaseFantome(id_j);
				}
				else
				{
					if (carte.getVal(i, j)==1)
					{
						grille[i][j] = new CaseSol();
					}
					else
					{
						grille[i][j] = new CaseMur();
					}
				}
				this.add(grille[i][j]);
			}
		}
	}

	/*
	public void deplacerJoueur(int id, int r, int c) {
		// TODO Auto-generated method stub
		int i, ar=0, ac=0;
		for (i=0; i<joueurs.size(); i++) {
			if (joueurs.get(i).getId()==id) {
				ar = joueurs.get(i).getR();
				ac = joueurs.get(i).getC();
				joueurs.get(i).setR(r);
				joueurs.get(i).setC(c);
			}
		}
		if (carte.getVal(ar, ac)==1)
		{
			grille[ar][ac] = new CaseSol();
		}
		else
		{
			grille[ar][ac] = new CaseMur();
		}
		//grille[r][c] = new CaseJoueur(id);
		this.Refresh();
	}
	
	public boolean deplacerCeJoueur(int id, int d)
	{//renvoie true si le d�placement est possible
		int i, ar=0, ac=0;
		for (i=0; i<joueurs.size(); i++) {
			if (joueurs.get(i).getId()==id) {
				ar = joueurs.get(i).getR();
				ac = joueurs.get(i).getC();
			}
		}
		//Joueur j = grille.getJoueur(id);
		//int l = j.getL();
		//int r = j.getC();
		switch (d)
		{
		case 37:
		{//gauche
			if (carte.getVal(ar, ac-1)==1)
			{
				//this.deplacerJoueur(id, ar, ac-1);
				return true;
			}
			break;
		}
		case 38:
		{//haut
			if (carte.getVal(ar-1, ac)==1)
			{
				//this.deplacerJoueur(id, ar-1, ac);
				return true;
			}
			break;
		}
		case 39:
		{//droite
			if (carte.getVal(ar, ac+1)==1)
			{
				//this.deplacerJoueur(id, ar, ac+1);
				return true;
			}
			break;
		}
		case 40:
		{//bas
			if (carte.getVal(ar+1, ac)==1)
			{
				//this.deplacerJoueur(id, ar+1, ac);
				return true;
			}
			break;
		}
		default:
		{
			return false;
		}
		}
		return false;
	}
*/
}
